home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / glass / glass.lha / GLASS / tm / tmds.h < prev    next >
C/C++ Source or Header  |  1990-11-06  |  5KB  |  213 lines

  1. /* 
  2.    Copyright (C) 1990 C van Reewijk, email: dutentb.uucp!reeuwijk
  3.  
  4. This file is part of GLASS.
  5.  
  6. GLASS is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 1, or (at your option)
  9. any later version.
  10.  
  11. GLASS is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GLASS; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /* template file:      tmds.ht
  21.    datastructure file: ds.ds
  22.    tm version:         27 (Mon Sep 10 17:30:58 METDST 1990)
  23.  */
  24.  
  25. /* ---- start of /users/reeuwijk/esprit/lib/calu.ht ---- */
  26. /* Definition C datastructures (Version for array list).
  27.  
  28.    template file:      /users/reeuwijk/esprit/lib/calu.ht
  29.    datastructure file: ds.ds
  30.    tm version:         27 (Mon Sep 10 17:30:58 METDST 1990)
  31.  */
  32.  
  33. typedef struct str_constructor_list *constructor_list;
  34. typedef struct str_ds_list *ds_list;
  35. typedef struct str_field_list *field_list;
  36. typedef struct str_string_list *string_list;
  37. typedef struct str_ds *ds;
  38. typedef struct str_constructor *constructor;
  39. typedef struct str_field *field;
  40.  
  41. #define dsNIL (ds)0
  42. #define constructorNIL (constructor)0
  43. #define fieldNIL (field)0
  44. #define constructor_listNIL (constructor_list)0
  45. #define ds_listNIL (ds_list)0
  46. #define field_listNIL (field_list)0
  47. #define string_listNIL (string_list)0
  48.  
  49. #define DsCons u.ue_DsCons
  50. #define DsTuple u.ue_DsTuple
  51.  
  52. typedef enum en_tags_ds {
  53.     TAGDsCons, TAGDsTuple
  54. } tags_ds;
  55.  
  56.  
  57. /* Structure for constructor DsCons */
  58. typedef struct str_DsCons {
  59.     string ctypename;
  60.     constructor_list conslist;
  61. } C_DsCons;
  62.  
  63. /* Structure for constructor DsTuple */
  64. typedef struct str_DsTuple {
  65.     string ttypename;
  66.     field_list tuplefields;
  67. } C_DsTuple;
  68.  
  69. struct str_ds {
  70.     tags_ds tag;
  71.     union uni_ds {
  72.     C_DsCons ue_DsCons;
  73.     C_DsTuple ue_DsTuple;
  74.     } u;
  75. };
  76.  
  77. struct str_constructor {
  78.     string conname;
  79.     field_list confields;
  80. };
  81.  
  82. struct str_field {
  83.     int listlev;
  84.     string sename;
  85.     string setype;
  86. };
  87.  
  88. struct str_constructor_list {
  89.     unsigned int sz;
  90.     unsigned int room;
  91.     constructor *arr;
  92. };
  93.  
  94. struct str_ds_list {
  95.     unsigned int sz;
  96.     unsigned int room;
  97.     ds *arr;
  98. };
  99.  
  100. struct str_field_list {
  101.     unsigned int sz;
  102.     unsigned int room;
  103.     field *arr;
  104. };
  105.  
  106. struct str_string_list {
  107.     unsigned int sz;
  108.     unsigned int room;
  109.     string *arr;
  110. };
  111.  
  112.  
  113. #if defined( __STDC__ ) && __STDC__>0
  114. /* new_<cons> and new_<type> routines */
  115. extern ds new_DsCons( string, constructor_list );
  116. extern ds new_DsTuple( string, field_list );
  117. extern constructor new_constructor( string, field_list );
  118. extern field new_field( int, string, string );
  119. extern ds_list new_ds_list( void );
  120. extern constructor_list new_constructor_list( void );
  121. extern field_list new_field_list( void );
  122. extern string_list new_string_list( void );
  123.  
  124. /* room_<type>_list() routines */
  125.  
  126. /* app_<type>_list() routines */
  127. extern void app_ds_list( ds_list, ds );
  128. extern void app_constructor_list( constructor_list, constructor );
  129. extern void app_field_list( field_list, field );
  130. extern void app_string_list( string_list, string );
  131.  
  132. /* append_<type>_list() routines */
  133.  
  134. /* ins_<type>_list() routines */
  135.  
  136. /* del_<type>_list() routines */
  137.  
  138. /* conc_<type>_list() routines */
  139.  
  140. /* concat_<type>_list() routines */
  141.  
  142. /* fre_<type>_list() routines */
  143.  
  144. /* rfre_<type>_list() routines */
  145. extern void rfre_ds_list( ds_list );
  146. extern void rfre_string_list( string_list );
  147.  
  148. /* print_<type>() routines */
  149. extern void print_ds_list( ds_list );
  150.  
  151. /* fprint_<type>() routines */
  152.  
  153. /* rdup_<type>() routines */
  154.  
  155. /* fscan_<type>() routines */
  156.  
  157. /* cmp_<type>() routines */
  158.  
  159. /* misc. functions */
  160. extern void flush_ds( void );
  161. extern void stat_ds( FILE * );
  162. #else
  163. /* new_<cons> and new_<type> routines */
  164. extern ds new_DsCons();
  165. extern ds new_DsTuple();
  166. extern constructor new_constructor();
  167. extern field new_field();
  168. extern ds_list new_ds_list();
  169. extern constructor_list new_constructor_list();
  170. extern field_list new_field_list();
  171. extern string_list new_string_list();
  172.  
  173. /* room_<type>_list() routines */
  174.  
  175. /* app_<type>_list() routines */
  176. extern void app_ds_list();
  177. extern void app_constructor_list();
  178. extern void app_field_list();
  179. extern void app_string_list();
  180.  
  181. /* append_<type>_list() routines */
  182.  
  183. /* ins_<type>_list() routines */
  184.  
  185. /* del_<type>_list() routines */
  186.  
  187. /* conc_<type>_list() routines */
  188.  
  189. /* concat_<type>_list() routines */
  190.  
  191. /* fre_<type>_list() routines */
  192.  
  193. /* rfre_<type>_list() routines */
  194. extern void rfre_ds_list();
  195. extern void rfre_string_list();
  196.  
  197. /* print_<type>() routines */
  198. extern void print_ds_list();
  199.  
  200. /* fprint_<type>() routines */
  201.  
  202. /* rdup_<type>() routines */
  203.  
  204. /* fscan_<type>() routines */
  205.  
  206. /* cmp_<type>() routines */
  207.  
  208. /* misc. functions */
  209. extern void flush_ds();
  210. extern void stat_ds();
  211. #endif
  212. /* ---- end of /users/reeuwijk/esprit/lib/calu.ht ---- */
  213.